﻿Imports System.Data
Imports CrystalDecisions.Shared
Imports CrystalDecisions.CrystalReports.Engine
Imports System.Data.OleDb
Imports System
Imports System.Globalization

Partial Class Interfaz_frmAdminOrdenTrabajo
    Inherits System.Web.UI.Page
    Dim CL As New ControladorLogica
    Dim requestID As String = ""

    Dim dtDatosSubP As New DataTable

    Dim ArraySubP As New ArrayList

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If CL.visibilidadesFormsInternos("Administracion", Session("user").ToString) = False Then
            Response.Redirect("Index.aspx")
        End If
        Dim i As Integer
        Dim ArrayCliente As New ArrayList
        Dim ArrayEmpleado As New ArrayList
        Dim ArrayRequisicion As New ArrayList
        Dim ArrayPresupuesto As New ArrayList
        Dim ArrayOrdenCompra As New ArrayList


        ArrayCliente = CL.obtenerCliente()
        ArrayEmpleado = CL.obtenerEmpleado()
        ArrayOrdenCompra = CL.ObtenerOrdenCompra()
        ArrayRequisicion = CL.ObtenerRequisicion()
        ArrayPresupuesto = CL.ObtenerPresupuesto()
      

        If Session("GridSUPDATOS") Is Nothing Then
            Session("GridSUPDATOS") = dtDatosSubP
        Else
            dtDatosSubP = DirectCast(Session("GridSUPDATOS"), DataTable)
        End If


        If Not Page.IsPostBack Then
            For i = 0 To ArrayRequisicion.Count - 1
                Me.DropRequisicion.Items.Add(DirectCast(ArrayRequisicion.Item(i), Requisicion).Id)
            Next

            For i = 0 To ArrayPresupuesto.Count - 1
                Me.DropPresupuesto.Items.Add(DirectCast(ArrayPresupuesto.Item(i), Presupuesto).ID)
            Next

            For i = 0 To ArrayOrdenCompra.Count - 1
                Me.DropOrdenCompra.Items.Add(DirectCast(ArrayOrdenCompra.Item(i), OrdenCompra).NumeroDeOrden)
            Next

            For i = 0 To ArrayEmpleado.Count - 1
                Me.DropEmpleado.Items.Add(DirectCast(ArrayEmpleado.Item(i), Empleado).Rut)
            Next


            Try
                dtDatosSubP.Columns.Add(New DataColumn("ID"))
                dtDatosSubP.Columns.Add(New DataColumn("NOMBRE"))
                dtDatosSubP.Columns.Add(New DataColumn("DESCRIPCION"))
                dtDatosSubP.Columns.Add(New DataColumn("OBSERVACION"))
                dtDatosSubP.Columns.Add(New DataColumn("NOTASCLIENTE"))
                dtDatosSubP.Columns.Add(New DataColumn("NOTASVENTA"))


                Me.GridSubP.DataBind()
                Me.GridSubP.DataSource = Me.dtDatosSubP

            Catch
            End Try
            ArraySubP.Clear()
            ArraySubP = CL.obtenerSubProyectoCriterio(Me.DropPresupuesto.Text)
            If (ArraySubP.Count > 0) Then

                obtenerSubproyectos()
            Else
                Me.LblAvisoIngresoItemPresu.Text = "EL presupuesto Ingresado NO cuenta con Tareas a Realizar."
            End If
        End If

    End Sub
   
  
#Region "Funciones"
    Public Sub Mensaje(ByVal msg As String)
        Dim alertScript As String = "<script language=JavaScript runat=server>"
        alertScript &= "alert('" & msg & "');"
        alertScript &= "</script>"
        ClientScript.RegisterClientScriptBlock(Page.GetType(), "clientScrip", alertScript)
    End Sub

    Private Sub consulta()

        Dim query As String = "select fkcliente from presupuesto where id=" + requestID
        Dim datoObtenido As String = CL.Ejecuta(query).Item("fkcliente").ToString
        Dim queryCliente As String = "select rznsocial from cliente where id =" + datoObtenido
        Dim DatoObtenidoCliente As String = CL.Ejecuta(queryCliente).Item("rznsocial").ToString

        TxTCliente.Text = DatoObtenidoCliente
    End Sub

    Private Sub CreaOrden()
        Dim rutEmpleado As String = DropEmpleado.SelectedItem.ToString
        Dim idPresupuesto As Integer = CInt(DropPresupuesto.SelectedItem.ToString)
        Dim ot As New OrdenTrabajo(Me.TxTDescrip.Text, 0, rutEmpleado, idPresupuesto, txtFecha.Text)
        Dim cont As Integer = 0
        'metodo check tabas
        Dim filaGrid As GridViewRow


        With Me.GridSubP
            ' Recorrer las filas del dataGridView  
            For fila As Integer = 0 To .Rows.Count - 1
                filaGrid = Me.GridSubP.Rows(fila)

                ' Recorrer la cantidad de columnas que contiene el dataGridView  
                Dim cb As CheckBox = filaGrid.FindControl("SelecItemOT")

                If cb.Checked = True Then
                    MsgBox(filaGrid.Cells(1).Text)
                    cont = cont + 1
                End If
            Next fila
        End With


        If CheckValida.Checked = True Then
            If cont > 0 Then

                CL.insertarOrdenTrabajo(ot)

                Dim queryUpdatePresupuesto As String = "update presupuesto set estado = 'A' where id =" + CStr(idPresupuesto)
                CL.Ejecuta(queryUpdatePresupuesto)
                Me.clear()

                With Me.GridSubP
                    ' Recorrer las filas del dataGridView  
                    For fila As Integer = 0 To .Rows.Count - 1
                        filaGrid = Me.GridSubP.Rows(fila)

                        ' Recorrer la cantidad de columnas que contiene el dataGridView  
                        Dim cb As CheckBox = filaGrid.FindControl("SelecItemOT")

                        If cb.Checked = True Then
                            CL.ActualizarPresupuestoSubproyecto(filaGrid.Cells(1).Text, "si")
                        End If
                    Next fila
                End With

                Me.Mensaje("La orden de trabajo a sido ingresada exitosamente")
            Else
                Me.clear()
                Me.Mensaje("No ha Selecionado ningun Item para Aprovar, intente nuevamente")
            End If
        Else
            Me.Mensaje("No ha validado Ningun Presupuesto")
        End If
    End Sub

    Private Sub obtenerSubproyectos()
        Me.LblAvisoIngresoItemPresu.Text = String.Empty
        Dim arraySP As presupuestosubproyecto

        Try
            Dim j As Integer

            For j = 0 To ArraySubP.Count
                Dim drDatos As DataRow = dtDatosSubP.NewRow

                arraySP = DirectCast(ArraySubP.Item(j), presupuestosubproyecto)
                drDatos.Item("ID") = arraySP.id
                drDatos.Item("NOMBRE") = arraySP.nombreSubProyecto
                drDatos.Item("DESCRIPCION") = arraySP.descripcionSubProyecto
                drDatos.Item("OBSERVACION") = arraySP.observacionTaller
                drDatos.Item("NOTASCLIENTE") = arraySP.notasAlCliente
                drDatos.Item("NOTASVENTA") = arraySP.notasVentas

                dtDatosSubP.Rows.Add(drDatos)

                Me.GridSubP.DataSource = dtDatosSubP
                Me.GridSubP.DataBind()

            Next j

        Catch ex As Exception
        End Try
    End Sub

    Private Sub clear()
        TxTCliente.Text = String.Empty
        TxtValor.Text = String.Empty
        TxTDescrip.Text = String.Empty
    End Sub


#End Region

#Region "Botones"

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        CreaOrden()
    End Sub

    Protected Sub DropPresupuesto_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropPresupuesto.SelectedIndexChanged
        requestID = DropPresupuesto.SelectedItem.ToString
        consulta()
        ArraySubP.Clear()
        dtDatosSubP.Clear()
        Me.GridSubP.DataSource = dtDatosSubP
        Me.GridSubP.DataBind()
        ArraySubP = CL.obtenerSubProyectoCriterio(Me.DropPresupuesto.Text)
        If (ArraySubP.Count > 0) Then

            obtenerSubproyectos()
        Else
            Me.LblAvisoIngresoItemPresu.Text = "EL presupuesto Ingresado NO cuenta con Tareas a Realizar."
        End If
    End Sub
#End Region


End Class
